function ready() {
    clientCollect.execute();
}

function bindReady() {
    // 防止在绑定document的ready事件监听之前document已经触发ready事件
    // 直接执行
    if (doc.readyState === 'complete') {
        return defer(ready);
    }

    // firefox或其他标准浏览器支持此方法
    domEvent.on(doc, 'DOMContentLoaded', onDOMLoaded);

    // 保险方法：监听win的load事件，这个事件任何情况下都能正常工作
    domEvent.on(win, 'load', onDOMLoaded);
}

function onDOMLoaded() {
    // 移除各load监听器
    domEvent.off(doc, 'DOMContentLoaded', onDOMLoaded);
    domEvent.off(doc, 'readystatechange', onDOMLoaded);
    domEvent.off(win, 'load', onDOMLoaded);
    // 调用ready执行监听ready的函数
    setTimeout(function(){
        ready();
    },50);
}

bindReady();
